package com.demo.pack1;

/**
 * 当我们代码中包含static变量的时候，就会有clinit方法
 * 如果当前类不存在static变量，那么它的字节码文件是不会存在<clinit>( )
 * 若该类具有父类，JVM会保证子类的<clinit>()执行前，父类的<clinit>()已经执行完毕
 * 构造器是虚拟机视角下的<init>()
 */
public class Son extends Father{

    private static int j = method();
    static{
        System.out.print(" 子静态 (2222)");
    }
    public Son(){
//      super();//写或不写都在，在子类构造器中一定会调用父类的构造器
        System.out.print(" 子构造 (5555)");
    }
    {
        System.out.print(" 子方法块 (4444)");
    }

    private int i = test();

    public int test(){
        System.out.print(" 子实例 (3333)");
        return 1;
    }
    public static int method(){
        System.out.print(" 子静态 (1111)");
        return 1;
    }
//    public static void main(String[] args) {
//        Son s1 = new Son();
//        System.out.println();
//        Son s2 = new Son();
//    }
}
